package com.weitu.util;

import com.weitu.base.entity.JsonTreeData;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @author WT-SUN on 2017/3/16.
 */
public class TreeNodeUtil {

    /**
     * 获取父节点
     *
     * @param treeDataList
     * @return
     */
    public final static List<JsonTreeData> getFatherNode(List<JsonTreeData> treeDataList) {
        List<JsonTreeData> newTreeDataList = new ArrayList<JsonTreeData>();
        List<Object> pIdList = new ArrayList<Object>();
        List<Object> idList = new ArrayList<Object>();
        for (JsonTreeData jsonTreeData:treeDataList){
            pIdList.add(jsonTreeData.getPid());
            idList.add(jsonTreeData.getId());
        }
        String pId = null;
        for (int i = pIdList.size(); i > 0; i--) {
            if (idList.contains(pIdList.get(i - 1))) {
                pIdList.remove(i - 1);
            }
        }
        if (pIdList.size() > 0) {
            pId = pIdList.get(0) == null ? null : pIdList.get(0).toString();
        }
        if (pId != null) {
            for (JsonTreeData jsonTreeData : treeDataList) {
                if (pId.equals(jsonTreeData.getPid())) {
                    jsonTreeData.setChildren(getChildrenNode(jsonTreeData.getId(), treeDataList));
                    if (jsonTreeData.getChildren().size() > 0) {
                        jsonTreeData.setState("closed");
                    }
                    newTreeDataList.add(jsonTreeData);
                }
            }
        } else {
            for (JsonTreeData jsonTreeData : treeDataList) {
                if (jsonTreeData.getPid() == null) {
                    jsonTreeData.setChildren(getChildrenNode(jsonTreeData.getId(), treeDataList));
                    if (jsonTreeData.getChildren().size() > 0) {
                        jsonTreeData.setState("closed");
                    }
                    newTreeDataList.add(jsonTreeData);
                }
            }
        }

        return newTreeDataList;
    }

    /**
     * @param pid
     * @param treeDataList
     * @return
     */
    private final static List<JsonTreeData> getChildrenNode(String pid, List<JsonTreeData> treeDataList) {
        List<JsonTreeData> newTreeDataList = new ArrayList<JsonTreeData>();
        for (JsonTreeData jsonTreeData : treeDataList) {
            if (jsonTreeData.getPid() == null) continue;
            //这是一个子节点
            if (jsonTreeData.getPid().equals(pid)) {
                //递归获取子节点下的子节点
                jsonTreeData.setChildren(getChildrenNode(jsonTreeData.getId(), treeDataList));
                if (jsonTreeData.getChildren().size() > 0) {
                    jsonTreeData.setState("closed");
                }
                //jsonTreeData.setIconCls(jsonTreeData.getIconCls());
                newTreeDataList.add(jsonTreeData);
            }
        }
        return newTreeDataList;
    }
}
